为什么ArrayList集合中不能使用foreach增删改?
面试官:如何决定使用 HashMap 还是 TreeMap?
点击“开发者技术前线”,选择“星标🔝”
在看|星标|留言, 真爱
来自:开发者技术前线
作者:GC
最近,笔者开发了一款App,深刻体会到打造App的极致体验的重要性,这对App的启动速度、页面秒开、稳定性都提出了严峻的挑战。那么,如何去验证App体验和性能达到了标准? 目前业内主要借助质量类服务检测。质量类服务主要提供客户端的崩溃、行为日志采集、启动速度、页面加载耗时、以及大盘性能监控能力。笔者发现,华为应用市场AppGallery Connect(简称AG Connect)就提供了此类质量服务,所以决定尝试一下。
目前市面上质量类平台主要有:华为应用市场AG Connect、友盟、TalkingData三款产品。这三款服务都提供了对App崩溃采集和质量统计服务。
首先之前有过友盟、TalkingData使用项目经历,我优先考虑华为应用市场AG Connect。
其次考虑到华为应用市场的App数据统计比较精准,且华为应用市场 AG Connect 严格遵从GDPR,即作为数据处理者不会获取和查看开发者应用的数据。因此符合我们对App极致体验的诉求,选择对AG Connect做下测评分析。
称AG Connect从构建、质量、增长、华为云方面给开发者提供了多个开发服务,主要有构建应用基础能力、提升应用质量、提高分发效率、和拉新促活用户。
一个AG Connect服务的基本开发流程如下:
准备开发环境
创建AG Connect项目
在项目中添加应用
设置数据存储位置
集成AG ConnectSDK
开发应用
接入AG Connect服务
接下来我们来测评下AG Connect具体能力的情况。
测试设备:MAC+ 测试Android手机 1 部 + USB 1 条
MAC安装“Android Studio”,并升级至最新版本。
为保证兼容性,要求最低兼容版本:Android 4.2 (API level 21) 或者JDK 1.8及以上版本。
集成AG Connect SDK。
AndroidStudio开发环境
添加 添加APM SDK 和 Crash SDK依赖到应用级 gradle 文件中(通常在 app/build.gradle)。
// ...
dependencies {
// ...
// Add APM SDK library dependency
implementation 'com.huawei.agconnect:agconnect-apms:1.3.1.300'
implementation 'com.huawei.agconnect:agconnect-crash:1.4.0.300'
}
在APP模块(应用级)的混淆配置中添加以下排除项:
-keep class com.huawei.agconnect.**{*;}
-dontwarn com.huawei.agconnect.**
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
-keep interface com.huawei.hms.analytics.type.HAEventType{*;}
-keep interface com.huawei.hms.analytics.type.HAParamType{*;}
-keepattributes Exceptions, Signature, InnerClasses, LineNumberTable
如果您使用了AndResGuard,需要在混淆配置文件中加入AndResGuard允许清单:
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"
如果您的应用使用的是AndroidX类库,需要在gradle.properties中增加如下配置,APM SDK将自动适配AndroidX:
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
集成APM插件:
1)在APP模块(应用级)的Gradle文件(通常是app/build.gradle)中应用APM插件:
apply plugin: 'com.android.application'
// Apply the APM plugin
apply plugin: 'com.huawei.agconnect.apms'
dependencies {
// ..
}
2)在根级(项目级)Gradle文件中添加APM插件:
buildscript {
repositories {
// Add the maven repository
maven { url 'http://developer.huawei.com/repo/' }
}
dependencies {
// ...
// To benefit from the latest APM feaures, update your Android Gradle Plugin dependency to at least v3.2.0
classpath 'com.android.tools.build:gradle:3.2.0'
// Add the dependency for the APM plugin
classpath 'com.huawei.agconnect:agconnect-apms-plugin:1.3.1.300'
}
}
新建应用:
登录华为应用市场AppGallery Connect 网站,选择添加“我的项目”。在我的项目页面点击“添加项目”,新建应用
新建一个APP 工程,包含两个页面,工程目录如下:
为了检测崩溃,第一个页面加入了crash测试按钮
为了测试是否统计Crash能力,我们通过模拟了一个NPE,来查看是否正常上报。
crashButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v) {
AGConnectCrash.getInstance().testIt(MainActivity.this);
}
});
在按钮添加一条crash事件,代码如上。
登录后台查看数据:
我们可以看到,本次崩溃日志已被记录。
分析报告看到:日志信息包含了发生时间、异常类型、用户、崩溃数量、崩溃率。此次测试成功,并且包含信息全面,可根据时间、异常类型、用户、崩溃数量、崩溃率多维度去查询。
华为AG Connect确实能完成对App崩溃率的检测,并能清晰提供数据支撑。
手动启动App5次,记录启动时长。测试结果如下:
启动时长中位为436ms。阈值为5000ms,华为AG Connect确页也能统计APP启动耗时。
我们点击跳转按钮,打开第二个页面,重复5次。测试结果如下:
从上图可以看出,我们记录了5个样本,具体里面有什么关键信息,是否数据提供? 点击查看详情:
由于只有一个测试版本,因此版分布显示为1.0,页面缓慢帧占比为40%。此外我们还可以产看前台停留时长、后台时长等数据,此次为人为手动测试,只看是否存在数据,发现数据着正常,因此我们不做分析。华为应用市场AG Connect能正确统计APP页面加载时长、用户停留时长等数据,是一个不错的App性能统计服务类产品。
我们本着对APP极致体验的方向出发,采用启动速度,秒开,稳定性,页面留存页面帧率,网络延时和成功率等指标作为支撑, 通过华为AG Connect的能力来验证我们的App以上几个指标的数据,由于篇幅关系,本次测评也主要从崩溃,性能两个关键功能做了测试。
本人之前有过其他两款产品友盟和talkingdata的项目经验,综合本次使用情况,针对三款产品对比如下:
产品 | 启动次数 | 启动速度 | 页面数据 | 自定义埋点 | 崩溃日志 | 渠道统计 | 服务生态 | 可视化 |
---|---|---|---|---|---|---|---|---|
AG Connect | 精准 | 精准 | 精准 | 精准 | 精准 | 精准 | 健全 | 支持 |
友盟 | 一般 | 精准 | 精准 | 精准 | 精准 | 一般 | 中等 | 支持 |
TalkingData | 一般 | 精准 | 精准 | 精准 | 精准 | 一般 | 中等 | 支持 |
可以看出华为应用市场AG Connect在启动次数、渠道统计、生态服务等方面表现出优势。本次的测试结果符合我们的预期,基本上满足了我们的诉求点,从App启动速度、页面加载时长,页面帧率、崩溃、到网络延时方面,都有明确的数据和可视化后台,从而辅助开发者检测自己App的性能。通过以上性能管理能力,我们也能去开发和维护一个优秀,满足用户极致体验的App。
最后本次测评,得出华为应用市场AG Connect的特点:
严格遵从gdpr的,作为数据处理者不会获取和查看开发者应用的数据
崩溃统计精确、性能管理能力体验优良、可视化后台稳定
且目前大部分能力是免费的,适合开发者使用
生态配套丰富,包含了应用市场、推送服务、云部署、云测试云储存、云托管、设备唯一识别、应用内分发等优秀服务。
华为应用市场AppGallery Connect致力于为应用的创意、开发、分发、运营、经营各环节提供一站式服务,构建全场景智慧化的应用生态体验。华为应用市场AppGallery Connect深度整合华为内部各项优质服务,将华为在全球化、质量、安全、工程管理等领域长期积累的能力开放给开发者,大幅降低应用开发与运维难度,提高版本质量,开放分发和运营服务,帮助开发者获得用户并实现收入的规模增长。
扫码进群,你奖获得:
大厂内推和技术交流,前沿学术交流